A sales lead includes a name or other indicia of identity (e.g., a phone number, mailing address or email address) of a person or business that may have an interest in purchasing a product or service. A sales lead provides a starting point for a salesperson to further develop the lead by marketing a specific vendor's product or service. The salesperson develops the sales lead by gathering information about the potential customer and providing the customer with information about the vendor. This mutual exchange of information helps the salesperson to persuade the potential customer to purchase a product or service from the vendor. If the customer makes a purchase, the salesperson has converted the sales lead into a sales transaction. A sales lead with a high probability of being converted into a sales transaction is considered a good lead.
Data mining can assist in generating sales leads by finding patterns in information gathered about customers. In the past, vendors have used data mining to match potential customers to products. To do so, data about customers, products, product categories, and previous purchases are imported into an application to generate the sales lead. Components or tools that import data from one system to another are often expected to ensure that the imported data has referential integrity for the receiving application to work. For example, if both customers and orders are imported from an external system, it is expected that the order records refer to customer records that actually exist.
A conventional import implementation ensures integrity by rejecting “bad” records and only accepting records for which all related records exist. For this reason, this implementation also requires that different types of records are imported in a certain order. For example, if order records depend on customers, then the customer records must be imported before the order records are imported. In some cases, these dependencies can be complex and hard to follow. Consider the following example: “order lines” refers to orders and products; “orders” refers to customers; and “products” refers to product categories. Using this example, the conventional implementation must import the record in the following order: product categories, products, customers, orders, order lines. If this order is not followed, some imported records will be rejected and the user will have to begin again.